package com.yida.gwj.deposit.service;

import com.yida.gwj.common.domain.dto.GwjUserDTO;
import com.yida.gwj.deposit.domain.GwjDepositBusiness;
import com.yida.gwj.deposit.domain.GwjDepositBusinessLog;

import java.util.List;

/**
 * 签署意见（缴存业务管理模块）Service接口
 *
 * @author lqq
 * @date 2023-01-09
 */
public interface IGwjDepositBusinessLogService {
	/**
	 * 查询签署意见（缴存业务管理模块）
	 *
	 * @param bizLogId 签署意见（缴存业务管理模块）主键
	 * @return 签署意见（缴存业务管理模块）
	 */
	public GwjDepositBusinessLog selectGwjDepositBusinessLogByBizLogId(Long bizLogId);

	/**
	 * 查询签署意见（缴存业务管理模块）列表
	 *
	 * @param gwjDepositBusinessLog 签署意见（缴存业务管理模块）
	 * @return 签署意见（缴存业务管理模块）集合
	 */
	public List<GwjDepositBusinessLog> selectGwjDepositBusinessLogList(GwjDepositBusinessLog gwjDepositBusinessLog);

	/**
	 * 新增签署意见（缴存业务管理模块）
	 *
	 * @param gwjDepositBusinessLog 签署意见（缴存业务管理模块）
	 * @return 结果
	 */
	public int insertGwjDepositBusinessLog(GwjDepositBusinessLog gwjDepositBusinessLog);

	/**
	 * 修改签署意见（缴存业务管理模块）
	 *
	 * @param gwjDepositBusinessLog 签署意见（缴存业务管理模块）
	 * @return 结果
	 */
	public int updateGwjDepositBusinessLog(GwjDepositBusinessLog gwjDepositBusinessLog);

	/**
	 * 批量删除签署意见（缴存业务管理模块）
	 *
	 * @param bizLogIds 需要删除的签署意见（缴存业务管理模块）主键集合
	 * @return 结果
	 */
	public int deleteGwjDepositBusinessLogByBizLogIds(Long[] bizLogIds);

	/**
	 * 删除签署意见（缴存业务管理模块）信息
	 *
	 * @param bizLogId 签署意见（缴存业务管理模块）主键
	 * @return 结果
	 */
	public int deleteGwjDepositBusinessLogByBizLogId(Long bizLogId);

	/**
	 * 根据步骤查询的终提交人
	 *
	 * @param bizId  业务ID
	 * @param stepId 步骤ID
	 * @return 操作者ID
	 */
	GwjUserDTO getPreviousSubmitUser(Long bizId, Long stepId);

	/**
	 * 根据步业务ID删除日志
	 *
	 * @param bizId 业务ID
	 * @return 操作者ID
	 */
	int deleteGwjDepositBusinessLogByBizId(Long bizId);

	/**
	 * 送件日志
	 *
	 * @param gwjDepositBusinessLog 业务日志
	 * @param gwjDepositBusiness    业务信息
	 */
	void addSendLog(GwjDepositBusinessLog gwjDepositBusinessLog, GwjDepositBusiness gwjDepositBusiness);

	/**
	 * 签署意见日志
	 *
	 * @param gwjDepositBusinessLog 日志信息
	 */
	void addSignOpinionLog(GwjDepositBusinessLog gwjDepositBusinessLog);

	/**
	 * 回退日志
	 *
	 * @param gwjDepositBusinessLog 业务信息
	 */
	void addFallbackLog(GwjDepositBusinessLog gwjDepositBusinessLog);

	/**
	 * 保存日志
	 *
	 * @param gwjDepositBusiness 业务信息
	 */
	void addSaveLog(GwjDepositBusiness gwjDepositBusiness);

	/**
	 * 提交日志
	 *
	 * @param gwjDepositBusinessLog 业务日志
	 * @param gwjDepositBusiness    业务信息
	 */
	void addSubmitLog(GwjDepositBusinessLog gwjDepositBusinessLog, GwjDepositBusiness gwjDepositBusiness);

	/**
	 * 案例回顾日志
	 *
	 * @param gwjDepositBusiness 业务信息
	 */
	void addFinishLog(GwjDepositBusiness gwjDepositBusiness);

	/**
	 * 业务作废日志
	 *
	 * @param gwjDepositBusinessLog 业务信息
	 */
	void addInvalidBusinessLog(GwjDepositBusinessLog gwjDepositBusinessLog);

	/**
	 * 查询签署意见（缴存业务管理模块）
	 *
	 * @param bizId 业务ID
	 * @return 签署意见（缴存业务管理模块）
	 */
	List<GwjDepositBusinessLog> selectGwjDepositBusinessLogListByBizId(Long bizId);
}
